0. Hàm load các thư viện số học, dữ liệu, mảng và biểu đồ
import numpy as np
import pandas as pd
#pd.__version__
import seaborn as sns
from matplotlib import pyplot as plt
from statsmodels.tsa.api import ExponentialSmoothing, SimpleExpSmoothing, Holt
from sklearn.linear_model import LinearRegression
import warnings
warnings.filterwarnings('ignore')
1. Hàm load dữ liệu từ file CSV, định dạng số cột, dòng
df = pd.read_csv(r"C:\Python311\workspaces\P6B55.csv")
pd.set_option("display.max_rows",df.shape[0]+1)
pd.set_option("display.max_columns",60)
df.shape
df
| Date | S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9 | S10 | S11 | S12 | S13 | S14 | S15 | S16 | S17 | S18 | S19 | S20 | S21 | S22 | S23 | S24 | S25 | S26 | S27 | S28 | S29 | S30 | S31 | S32 | S33 | S34 | S35 | S36 | S37 | S38 | S39 | S40 | S41 | S42 | S43 | S44 | S45 | S46 | S47 | S48 | S49 | S50 | S51 | S52 | S53 | S54 | S55 | ST | Link | Type | BD | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 28/9/2023 | 103 | 94 | 113 | 91 | 107 | 94 | 88 | 108 | 108 | 94 | 113 | 110 | 94 | 93 | 94 | 90 | 94 | 108 | 102 | 99 | 94 | 114 | 116 | 108 | 100 | 94 | 92 | 89 | 110 | 99 | 103 | 115 | 111 | 107 | 102 | 97 | 86 | 92 | 94 | 100 | 114 | 108 | 111 | 113 | 100 | 105 | 108 | 104 | 111 | 97 | 115 | 98 | 109 | 97 | 100 | 102.000000 | https://vietlott.vn/vi/choi/power-6-55/thong-k... | P7B55 | 01.08.2017 |
| 1 | 30/9/2023 | 103 | 94 | 114 | 92 | 107 | 94 | 88 | 108 | 108 | 94 | 113 | 110 | 95 | 94 | 94 | 90 | 94 | 108 | 103 | 100 | 94 | 114 | 117 | 109 | 100 | 94 | 93 | 89 | 110 | 100 | 103 | 115 | 111 | 107 | 102 | 98 | 86 | 93 | 94 | 100 | 115 | 108 | 111 | 114 | 101 | 105 | 109 | 104 | 111 | 98 | 115 | 98 | 109 | 97 | 100 | 102.310000 | NaN | NaN | NaN |
| 2 | 3/10/2023 | 103 | 94 | 115 | 92 | 107 | 94 | 88 | 108 | 108 | 94 | 113 | 110 | 95 | 94 | 95 | 90 | 94 | 108 | 103 | 100 | 94 | 114 | 117 | 109 | 100 | 94 | 94 | 89 | 111 | 100 | 103 | 115 | 111 | 107 | 102 | 98 | 87 | 93 | 94 | 100 | 115 | 108 | 111 | 115 | 101 | 105 | 109 | 105 | 111 | 98 | 115 | 98 | 109 | 97 | 100 | 102.440000 | NaN | NaN | NaN |
| 3 | 7/10/2023 | 104 | 94 | 115 | 92 | 107 | 94 | 88 | 108 | 108 | 94 | 113 | 110 | 95 | 94 | 95 | 90 | 94 | 108 | 103 | 100 | 95 | 114 | 117 | 109 | 100 | 94 | 94 | 89 | 111 | 100 | 103 | 115 | 112 | 107 | 102 | 98 | 87 | 93 | 94 | 100 | 115 | 108 | 111 | 115 | 101 | 106 | 110 | 105 | 111 | 98 | 115 | 98 | 110 | 97 | 100 | 102.550000 | NaN | NaN | NaN |
| 4 | 10/10/2023 | 104 | 94 | 115 | 93 | 107 | 95 | 88 | 108 | 108 | 94 | 113 | 110 | 96 | 94 | 95 | 90 | 94 | 108 | 103 | 100 | 95 | 114 | 118 | 109 | 100 | 95 | 94 | 89 | 111 | 100 | 103 | 115 | 112 | 107 | 102 | 99 | 88 | 93 | 94 | 101 | 115 | 108 | 112 | 116 | 101 | 107 | 110 | 105 | 111 | 98 | 115 | 99 | 110 | 97 | 100 | 102.760000 | NaN | NaN | NaN |
| 5 | 12/10/2023 | 104 | 94 | 115 | 93 | 108 | 95 | 88 | 109 | 109 | 94 | 113 | 110 | 96 | 94 | 95 | 90 | 94 | 108 | 103 | 101 | 95 | 114 | 118 | 109 | 100 | 95 | 94 | 89 | 111 | 100 | 103 | 115 | 112 | 107 | 102 | 100 | 88 | 93 | 94 | 101 | 115 | 108 | 112 | 116 | 101 | 107 | 110 | 105 | 111 | 99 | 115 | 99 | 110 | 97 | 100 | 102.870000 | NaN | NaN | NaN |
| 6 | 14/10/2023 | 104 | 94 | 115 | 93 | 108 | 95 | 88 | 110 | 109 | 94 | 113 | 110 | 96 | 94 | 95 | 90 | 94 | 108 | 103 | 101 | 95 | 114 | 119 | 109 | 100 | 95 | 94 | 89 | 111 | 101 | 103 | 115 | 112 | 108 | 102 | 100 | 88 | 94 | 94 | 101 | 115 | 108 | 112 | 116 | 101 | 107 | 111 | 105 | 111 | 99 | 115 | 99 | 110 | 97 | 100 | 102.980000 | NaN | NaN | NaN |
| 7 | 17/10/2023 | 104 | 94 | 115 | 93 | 108 | 95 | 88 | 110 | 109 | 94 | 113 | 110 | 97 | 94 | 95 | 90 | 94 | 108 | 103 | 101 | 95 | 115 | 119 | 109 | 100 | 95 | 94 | 89 | 111 | 101 | 103 | 115 | 113 | 108 | 102 | 100 | 88 | 94 | 94 | 101 | 116 | 108 | 112 | 116 | 101 | 108 | 112 | 105 | 111 | 99 | 115 | 99 | 110 | 97 | 100 | 103.090000 | NaN | NaN | NaN |
| 8 | 19/10/2023 | 105 | 94 | 115 | 93 | 108 | 95 | 88 | 110 | 109 | 94 | 113 | 110 | 97 | 94 | 95 | 90 | 94 | 108 | 103 | 101 | 95 | 115 | 120 | 109 | 100 | 95 | 94 | 89 | 112 | 101 | 103 | 115 | 113 | 108 | 102 | 100 | 89 | 94 | 94 | 101 | 116 | 108 | 112 | 116 | 101 | 108 | 112 | 105 | 111 | 99 | 116 | 99 | 110 | 97 | 101 | 103.200000 | NaN | NaN | NaN |
| 9 | 21/10/2023 | 105 | 94 | 115 | 93 | 108 | 95 | 88 | 110 | 109 | 94 | 114 | 110 | 97 | 94 | 95 | 91 | 94 | 108 | 103 | 101 | 95 | 115 | 120 | 110 | 100 | 95 | 94 | 89 | 112 | 101 | 103 | 115 | 113 | 109 | 102 | 100 | 89 | 94 | 94 | 101 | 116 | 108 | 112 | 116 | 101 | 108 | 113 | 105 | 111 | 99 | 116 | 100 | 110 | 97 | 101 | 103.310000 | NaN | NaN | NaN |
| 10 | 24/10/2023 | 105 | 94 | 115 | 93 | 108 | 95 | 88 | 110 | 109 | 94 | 114 | 111 | 97 | 94 | 95 | 91 | 94 | 108 | 103 | 102 | 95 | 115 | 120 | 110 | 100 | 96 | 94 | 89 | 112 | 101 | 103 | 115 | 114 | 109 | 102 | 100 | 89 | 94 | 94 | 102 | 116 | 108 | 112 | 117 | 101 | 108 | 113 | 105 | 111 | 99 | 116 | 100 | 110 | 97 | 101 | 103.420000 | NaN | NaN | NaN |
| 11 | 26/10/2023 | 105 | 94 | 115 | 93 | 108 | 95 | 88 | 110 | 109 | 94 | 114 | 111 | 97 | 95 | 95 | 91 | 94 | 108 | 103 | 102 | 95 | 116 | 120 | 110 | 100 | 96 | 94 | 89 | 112 | 101 | 103 | 116 | 114 | 109 | 102 | 100 | 90 | 94 | 94 | 102 | 116 | 109 | 113 | 117 | 101 | 108 | 113 | 106 | 111 | 99 | 116 | 100 | 110 | 97 | 101 | 103.550000 | NaN | NaN | NaN |
| 12 | 28/10/2023 | 105 | 94 | 115 | 93 | 108 | 95 | 88 | 110 | 109 | 95 | 115 | 111 | 97 | 96 | 95 | 91 | 94 | 108 | 103 | 102 | 95 | 116 | 120 | 110 | 101 | 96 | 94 | 89 | 112 | 101 | 103 | 116 | 114 | 109 | 102 | 100 | 90 | 94 | 94 | 102 | 116 | 109 | 113 | 118 | 101 | 109 | 114 | 106 | 111 | 99 | 116 | 100 | 110 | 97 | 101 | 103.670000 | NaN | NaN | NaN |
| 13 | 31/10/2023 | 105 | 94 | 115 | 93 | 108 | 95 | 88 | 110 | 109 | 95 | 115 | 111 | 97 | 96 | 95 | 92 | 95 | 108 | 103 | 102 | 95 | 116 | 120 | 110 | 101 | 96 | 94 | 90 | 112 | 101 | 103 | 116 | 114 | 109 | 102 | 100 | 91 | 94 | 94 | 102 | 116 | 109 | 113 | 118 | 101 | 109 | 114 | 106 | 111 | 99 | 116 | 100 | 110 | 97 | 101 | 103.750000 | NaN | NaN | NaN |
| 14 | 2/11/2023 | 105 | 94 | 115 | 93 | 108 | 95 | 88 | 110 | 110 | 95 | 115 | 111 | 97 | 96 | 96 | 92 | 96 | 108 | 103 | 102 | 96 | 116 | 120 | 110 | 101 | 97 | 94 | 90 | 112 | 101 | 103 | 116 | 114 | 109 | 102 | 101 | 91 | 94 | 94 | 102 | 116 | 109 | 113 | 118 | 101 | 109 | 114 | 106 | 111 | 99 | 116 | 100 | 110 | 97 | 101 | 103.850000 | NaN | NaN | NaN |
| 15 | 4/11/2023 | 105 | 94 | 115 | 93 | 108 | 95 | 88 | 110 | 110 | 95 | 115 | 111 | 97 | 97 | 96 | 92 | 96 | 108 | 103 | 102 | 96 | 116 | 120 | 110 | 101 | 97 | 94 | 90 | 112 | 101 | 103 | 116 | 114 | 109 | 103 | 101 | 92 | 94 | 94 | 102 | 116 | 109 | 113 | 118 | 101 | 109 | 115 | 107 | 111 | 100 | 116 | 100 | 110 | 97 | 101 | 103.960000 | NaN | NaN | NaN |
| 16 | 7/11/2023 | 105 | 94 | 115 | 93 | 108 | 95 | 88 | 110 | 110 | 95 | 115 | 112 | 97 | 97 | 96 | 92 | 96 | 109 | 103 | 103 | 96 | 116 | 120 | 110 | 101 | 97 | 94 | 91 | 112 | 101 | 103 | 116 | 114 | 109 | 104 | 101 | 92 | 94 | 94 | 102 | 116 | 109 | 113 | 118 | 101 | 109 | 115 | 107 | 111 | 100 | 116 | 101 | 110 | 97 | 101 | 104.070000 | NaN | NaN | NaN |
| 17 | 9/11/2023 | 105 | 94 | 115 | 93 | 108 | 95 | 88 | 111 | 110 | 95 | 115 | 112 | 97 | 97 | 96 | 92 | 97 | 109 | 103 | 103 | 96 | 116 | 120 | 111 | 101 | 97 | 94 | 91 | 112 | 101 | 103 | 116 | 114 | 110 | 104 | 101 | 92 | 94 | 95 | 102 | 116 | 109 | 113 | 118 | 101 | 109 | 115 | 108 | 111 | 100 | 116 | 101 | 110 | 97 | 101 | 104.180000 | NaN | NaN | NaN |
| 18 | 11/11/2023 | 105 | 95 | 116 | 94 | 108 | 95 | 88 | 111 | 110 | 95 | 115 | 112 | 97 | 97 | 96 | 92 | 97 | 109 | 104 | 103 | 96 | 116 | 120 | 111 | 101 | 97 | 94 | 91 | 112 | 101 | 103 | 116 | 114 | 110 | 104 | 101 | 92 | 94 | 95 | 102 | 117 | 110 | 113 | 118 | 101 | 109 | 115 | 108 | 111 | 100 | 116 | 101 | 110 | 97 | 101 | 104.290000 | NaN | NaN | NaN |
| 19 | 14/11/2023 | 105 | 95 | 116 | 95 | 108 | 95 | 88 | 111 | 111 | 95 | 115 | 113 | 97 | 97 | 97 | 92 | 97 | 109 | 104 | 103 | 96 | 117 | 120 | 111 | 101 | 97 | 94 | 91 | 112 | 101 | 103 | 116 | 114 | 110 | 104 | 101 | 92 | 95 | 95 | 102 | 117 | 110 | 113 | 118 | 101 | 109 | 115 | 108 | 111 | 100 | 116 | 101 | 110 | 97 | 101 | 104.400000 | NaN | NaN | NaN |
| 20 | 16/11/2023 | 105 | 95 | 117 | 95 | 109 | 95 | 88 | 111 | 111 | 96 | 115 | 113 | 97 | 97 | 97 | 92 | 97 | 110 | 104 | 103 | 96 | 117 | 120 | 111 | 101 | 97 | 94 | 91 | 112 | 101 | 103 | 116 | 114 | 110 | 104 | 101 | 92 | 95 | 95 | 102 | 117 | 110 | 113 | 119 | 101 | 109 | 115 | 108 | 112 | 100 | 116 | 101 | 110 | 97 | 101 | 104.510000 | NaN | NaN | NaN |
| 21 | 18/11/2023 | 106 | 95 | 117 | 95 | 109 | 95 | 89 | 111 | 111 | 97 | 115 | 113 | 97 | 98 | 97 | 92 | 97 | 110 | 104 | 103 | 96 | 117 | 120 | 111 | 101 | 97 | 94 | 92 | 113 | 101 | 103 | 116 | 114 | 110 | 104 | 101 | 92 | 95 | 95 | 102 | 117 | 110 | 113 | 119 | 101 | 109 | 115 | 108 | 112 | 100 | 116 | 101 | 110 | 97 | 101 | 104.620000 | NaN | NaN | NaN |
| 22 | 21/11/2023 | 106 | 95 | 118 | 95 | 109 | 95 | 90 | 111 | 111 | 97 | 115 | 113 | 97 | 98 | 97 | 93 | 97 | 110 | 104 | 103 | 96 | 117 | 120 | 111 | 101 | 97 | 94 | 92 | 113 | 101 | 103 | 116 | 114 | 110 | 104 | 101 | 93 | 95 | 96 | 102 | 117 | 110 | 113 | 119 | 101 | 109 | 115 | 108 | 112 | 100 | 117 | 101 | 110 | 97 | 101 | 104.730000 | NaN | NaN | NaN |
| 23 | 23/11/2023 | 106 | 95 | 118 | 96 | 109 | 96 | 90 | 111 | 111 | 97 | 115 | 113 | 97 | 98 | 97 | 93 | 97 | 110 | 104 | 103 | 96 | 117 | 120 | 111 | 101 | 98 | 94 | 92 | 113 | 101 | 103 | 116 | 115 | 110 | 104 | 101 | 93 | 95 | 96 | 102 | 117 | 110 | 113 | 119 | 101 | 109 | 115 | 108 | 112 | 100 | 117 | 102 | 110 | 97 | 102 | 104.840000 | NaN | NaN | NaN |
| 24 | 25/11/2023 | 106 | 95 | 118 | 96 | 109 | 96 | 91 | 111 | 112 | 98 | 115 | 113 | 97 | 98 | 97 | 93 | 98 | 110 | 104 | 103 | 96 | 117 | 120 | 111 | 102 | 98 | 94 | 92 | 113 | 101 | 103 | 116 | 115 | 110 | 104 | 101 | 93 | 95 | 96 | 102 | 117 | 110 | 113 | 119 | 101 | 109 | 115 | 108 | 112 | 100 | 117 | 102 | 111 | 97 | 102 | 104.950000 | NaN | NaN | NaN |
| 25 | 28/11/2023 | 106 | 95 | 118 | 96 | 109 | 96 | 91 | 111 | 112 | 99 | 115 | 113 | 97 | 98 | 97 | 93 | 98 | 110 | 104 | 103 | 96 | 117 | 120 | 112 | 102 | 98 | 94 | 92 | 113 | 101 | 103 | 116 | 115 | 110 | 104 | 101 | 93 | 95 | 96 | 102 | 117 | 110 | 113 | 119 | 101 | 109 | 116 | 109 | 112 | 100 | 117 | 103 | 111 | 97 | 103 | 105.050000 | NaN | NaN | NaN |
| 26 | 30/11/2023 | 106 | 95 | 118 | 96 | 109 | 96 | 91 | 111 | 113 | 99 | 115 | 113 | 98 | 98 | 97 | 93 | 98 | 110 | 104 | 103 | 97 | 117 | 120 | 112 | 102 | 98 | 94 | 93 | 113 | 101 | 103 | 116 | 115 | 110 | 104 | 101 | 93 | 95 | 96 | 102 | 117 | 110 | 113 | 119 | 101 | 109 | 116 | 109 | 112 | 101 | 117 | 103 | 111 | 98 | 103 | 105.160000 | NaN | NaN | NaN |
| 27 | 2/12/2023 | 107 | 95 | 118 | 96 | 109 | 96 | 91 | 111 | 113 | 100 | 115 | 113 | 98 | 98 | 97 | 93 | 98 | 110 | 104 | 104 | 97 | 117 | 120 | 112 | 102 | 98 | 94 | 93 | 113 | 101 | 103 | 116 | 115 | 110 | 104 | 101 | 94 | 95 | 96 | 102 | 117 | 110 | 113 | 119 | 101 | 109 | 116 | 110 | 112 | 101 | 118 | 103 | 111 | 98 | 103 | 105.270000 | NaN | NaN | NaN |
| 28 | 5/12/2023 | 107 | 96 | 118 | 97 | 109 | 96 | 91 | 111 | 113 | 100 | 115 | 113 | 98 | 98 | 97 | 93 | 98 | 110 | 105 | 104 | 97 | 117 | 120 | 112 | 102 | 98 | 94 | 93 | 113 | 101 | 103 | 117 | 115 | 110 | 105 | 101 | 94 | 95 | 97 | 102 | 117 | 110 | 113 | 119 | 101 | 109 | 116 | 110 | 113 | 101 | 118 | 103 | 111 | 98 | 103 | 105.400000 | NaN | NaN | NaN |
| 29 | 7/12/2023 | 107 | 96 | 118 | 97 | 109 | 96 | 91 | 111 | 114 | 100 | 115 | 113 | 99 | 98 | 97 | 93 | 98 | 110 | 105 | 104 | 97 | 117 | 120 | 112 | 102 | 98 | 94 | 94 | 113 | 101 | 103 | 117 | 116 | 110 | 105 | 101 | 94 | 95 | 97 | 102 | 117 | 110 | 113 | 119 | 101 | 109 | 117 | 110 | 113 | 102 | 118 | 103 | 112 | 98 | 103 | 105.530000 | NaN | NaN | NaN |
| 30 | 9/12/2023 | 107 | 96 | 118 | 97 | 109 | 97 | 91 | 111 | 115 | 100 | 115 | 113 | 99 | 98 | 97 | 93 | 98 | 110 | 105 | 104 | 97 | 117 | 120 | 112 | 102 | 99 | 95 | 94 | 113 | 101 | 103 | 117 | 116 | 111 | 105 | 101 | 94 | 95 | 97 | 102 | 118 | 110 | 113 | 119 | 101 | 109 | 118 | 110 | 113 | 102 | 118 | 103 | 112 | 98 | 103 | 105.650000 | NaN | NaN | NaN |
| 31 | 12/12/2023 | 107 | 96 | 118 | 97 | 109 | 98 | 92 | 111 | 115 | 100 | 115 | 113 | 99 | 98 | 97 | 94 | 98 | 110 | 105 | 104 | 98 | 117 | 120 | 112 | 102 | 99 | 95 | 94 | 113 | 101 | 103 | 117 | 116 | 112 | 105 | 101 | 94 | 95 | 97 | 102 | 118 | 110 | 113 | 119 | 101 | 109 | 118 | 110 | 113 | 103 | 118 | 103 | 112 | 98 | 103 | 105.763636 | NaN | NaN | NaN |
| 32 | 14/12/2023 | 108 | 96 | 118 | 97 | 109 | 98 | 92 | 111 | 115 | 100 | 115 | 114 | 99 | 98 | 97 | 94 | 98 | 110 | 105 | 104 | 98 | 117 | 121 | 112 | 102 | 99 | 95 | 94 | 113 | 102 | 103 | 117 | 116 | 112 | 105 | 101 | 94 | 95 | 97 | 102 | 118 | 110 | 114 | 119 | 101 | 109 | 118 | 111 | 113 | 103 | 118 | 104 | 112 | 98 | 103 | 105.890909 | NaN | NaN | NaN |
| 33 | 16/12/2023 | 108 | 96 | 118 | 97 | 109 | 98 | 92 | 111 | 115 | 100 | 115 | 114 | 100 | 98 | 98 | 94 | 98 | 110 | 105 | 104 | 99 | 117 | 121 | 112 | 102 | 100 | 95 | 94 | 113 | 102 | 103 | 117 | 116 | 113 | 106 | 101 | 94 | 95 | 97 | 102 | 118 | 110 | 114 | 119 | 102 | 109 | 118 | 111 | 113 | 103 | 118 | 104 | 112 | 98 | 103 | 106.020000 | NaN | NaN | NaN |
| 34 | 19/12/2023 | 108 | 96 | 118 | 97 | 109 | 98 | 92 | 111 | 115 | 100 | 116 | 114 | 100 | 99 | 99 | 94 | 98 | 111 | 105 | 104 | 99 | 117 | 121 | 113 | 102 | 100 | 95 | 94 | 113 | 102 | 103 | 117 | 116 | 114 | 106 | 101 | 94 | 95 | 97 | 102 | 118 | 110 | 114 | 119 | 102 | 109 | 118 | 111 | 113 | 103 | 118 | 104 | 113 | 98 | 103 | 106.145454 | NaN | NaN | NaN |
| 35 | 21/12/2023 | 108 | 96 | 119 | 97 | 109 | 98 | 92 | 111 | 116 | 100 | 116 | 114 | 100 | 99 | 99 | 94 | 98 | 111 | 105 | 104 | 99 | 117 | 121 | 113 | 102 | 100 | 95 | 94 | 113 | 102 | 104 | 117 | 116 | 114 | 106 | 101 | 94 | 95 | 98 | 102 | 119 | 110 | 114 | 119 | 102 | 109 | 119 | 112 | 113 | 103 | 118 | 104 | 113 | 98 | 103 | 106.272727 | NaN | NaN | NaN |
| 36 | 23/12/2023 | 108 | 96 | 119 | 97 | 109 | 98 | 92 | 111 | 116 | 100 | 116 | 114 | 100 | 99 | 99 | 94 | 98 | 111 | 105 | 104 | 99 | 118 | 121 | 113 | 102 | 100 | 95 | 94 | 113 | 102 | 104 | 118 | 116 | 114 | 106 | 101 | 94 | 95 | 99 | 102 | 119 | 110 | 115 | 119 | 102 | 110 | 119 | 113 | 114 | 103 | 118 | 104 | 113 | 98 | 103 | 106.400000 | NaN | NaN | NaN |
| 37 | 26/12/2023 | 108 | 96 | 119 | 97 | 109 | 98 | 92 | 111 | 116 | 101 | 116 | 114 | 100 | 100 | 99 | 94 | 99 | 111 | 105 | 104 | 99 | 118 | 121 | 113 | 103 | 100 | 96 | 94 | 114 | 102 | 104 | 118 | 116 | 114 | 106 | 101 | 94 | 95 | 99 | 103 | 119 | 110 | 115 | 119 | 102 | 110 | 119 | 113 | 114 | 103 | 118 | 104 | 113 | 98 | 103 | 106.527273 | NaN | NaN | NaN |
| 38 | 28/12/2023 | 108 | 96 | 119 | 97 | 109 | 98 | 92 | 111 | 116 | 101 | 116 | 114 | 100 | 100 | 99 | 94 | 99 | 111 | 105 | 105 | 99 | 118 | 121 | 113 | 103 | 100 | 96 | 95 | 114 | 103 | 104 | 119 | 116 | 114 | 106 | 101 | 94 | 95 | 99 | 104 | 119 | 110 | 115 | 119 | 103 | 110 | 119 | 113 | 114 | 103 | 118 | 105 | 113 | 98 | 103 | 106.654545 | NaN | NaN | NaN |
| 39 | 30/12/2023 | 108 | 97 | 119 | 97 | 109 | 98 | 92 | 111 | 117 | 101 | 116 | 114 | 100 | 100 | 99 | 94 | 100 | 111 | 105 | 105 | 99 | 118 | 121 | 113 | 103 | 100 | 96 | 95 | 115 | 103 | 104 | 120 | 116 | 114 | 106 | 101 | 94 | 96 | 99 | 104 | 119 | 110 | 115 | 119 | 103 | 110 | 119 | 113 | 114 | 103 | 118 | 106 | 113 | 98 | 103 | 106.780000 | NaN | NaN | NaN |
| 40 | 2/1/2024 | 108 | 98 | 119 | 97 | 110 | 98 | 92 | 111 | 117 | 101 | 116 | 114 | 100 | 100 | 99 | 94 | 100 | 112 | 105 | 106 | 99 | 118 | 121 | 113 | 103 | 100 | 96 | 95 | 115 | 103 | 105 | 120 | 116 | 114 | 106 | 101 | 95 | 96 | 99 | 104 | 119 | 110 | 115 | 119 | 104 | 110 | 119 | 113 | 114 | 103 | 118 | 106 | 113 | 98 | 103 | 106.909091 | NaN | NaN | NaN |
| 41 | 4/1/2024 | 108 | 98 | 119 | 97 | 110 | 98 | 93 | 111 | 117 | 101 | 116 | 114 | 100 | 100 | 99 | 94 | 100 | 112 | 105 | 106 | 99 | 118 | 121 | 113 | 103 | 100 | 96 | 96 | 115 | 103 | 105 | 120 | 116 | 115 | 106 | 101 | 96 | 96 | 99 | 104 | 119 | 110 | 116 | 119 | 104 | 110 | 119 | 113 | 114 | 103 | 118 | 107 | 113 | 99 | 103 | 107.036364 | NaN | NaN | NaN |
| 42 | 6/1/2024 | 108 | 98 | 119 | 97 | 110 | 98 | 93 | 111 | 117 | 101 | 117 | 114 | 100 | 100 | 100 | 94 | 101 | 112 | 105 | 106 | 100 | 118 | 121 | 114 | 103 | 100 | 96 | 96 | 115 | 103 | 105 | 120 | 116 | 116 | 106 | 101 | 96 | 96 | 99 | 104 | 119 | 110 | 116 | 119 | 104 | 111 | 119 | 113 | 114 | 103 | 118 | 107 | 113 | 99 | 103 | 107.160000 | NaN | NaN | NaN |
| 43 | 9/1/2024 | 108 | 98 | 119 | 97 | 110 | 98 | 93 | 111 | 117 | 101 | 117 | 114 | 100 | 100 | 100 | 95 | 101 | 112 | 105 | 106 | 100 | 118 | 121 | 114 | 103 | 100 | 96 | 96 | 115 | 103 | 105 | 121 | 116 | 116 | 106 | 101 | 96 | 96 | 99 | 104 | 119 | 110 | 116 | 119 | 105 | 111 | 119 | 113 | 114 | 104 | 118 | 108 | 114 | 100 | 103 | 107.290909 | NaN | NaN | NaN |
| 44 | 11/1/2024 | 108 | 99 | 119 | 97 | 110 | 98 | 93 | 111 | 117 | 101 | 117 | 114 | 100 | 100 | 100 | 95 | 101 | 112 | 105 | 106 | 100 | 118 | 122 | 114 | 103 | 100 | 96 | 97 | 115 | 103 | 105 | 122 | 116 | 116 | 106 | 101 | 96 | 96 | 99 | 104 | 119 | 110 | 116 | 120 | 105 | 111 | 119 | 113 | 114 | 104 | 119 | 109 | 114 | 100 | 103 | 107.420000 | NaN | NaN | NaN |
| 45 | 13/1/2024 | 109 | 99 | 119 | 97 | 111 | 98 | 94 | 111 | 117 | 101 | 117 | 114 | 100 | 100 | 100 | 95 | 101 | 112 | 105 | 106 | 101 | 118 | 123 | 114 | 103 | 100 | 96 | 97 | 115 | 103 | 105 | 122 | 116 | 116 | 107 | 101 | 96 | 96 | 99 | 104 | 119 | 111 | 116 | 120 | 105 | 111 | 119 | 113 | 114 | 104 | 119 | 109 | 114 | 100 | 103 | 107.550000 | NaN | NaN | NaN |
| 46 | 16/1/2024 | 109 | 99 | 119 | 97 | 111 | 98 | 94 | 111 | 118 | 101 | 117 | 114 | 100 | 101 | 100 | 95 | 101 | 113 | 105 | 107 | 101 | 118 | 123 | 114 | 103 | 100 | 97 | 97 | 115 | 103 | 105 | 122 | 116 | 116 | 107 | 101 | 96 | 96 | 99 | 104 | 119 | 112 | 117 | 120 | 105 | 111 | 119 | 113 | 114 | 104 | 119 | 109 | 114 | 100 | 103 | 107.670000 | NaN | NaN | NaN |
| 47 | 18/1/2024 | 109 | 99 | 119 | 97 | 111 | 98 | 94 | 111 | 118 | 101 | 117 | 115 | 100 | 101 | 100 | 95 | 101 | 113 | 105 | 108 | 101 | 118 | 123 | 114 | 103 | 100 | 97 | 97 | 115 | 103 | 105 | 122 | 117 | 116 | 108 | 101 | 96 | 97 | 99 | 105 | 119 | 112 | 117 | 120 | 105 | 111 | 119 | 113 | 114 | 104 | 119 | 110 | 114 | 100 | 103 | 107.800000 | NaN | NaN | NaN |
| 48 | 20/1/2024 | 109 | 99 | 119 | 97 | 111 | 99 | 94 | 111 | 118 | 101 | 117 | 115 | 100 | 101 | 100 | 95 | 101 | 113 | 105 | 108 | 101 | 118 | 123 | 114 | 104 | 100 | 97 | 97 | 116 | 103 | 105 | 122 | 117 | 117 | 108 | 101 | 96 | 98 | 99 | 105 | 119 | 112 | 117 | 120 | 105 | 111 | 119 | 113 | 115 | 104 | 119 | 110 | 114 | 101 | 103 | 107.927273 | NaN | NaN | NaN |
| 49 | 23/1/2024 | 109 | 99 | 119 | 97 | 111 | 99 | 94 | 111 | 118 | 101 | 117 | 115 | 101 | 101 | 100 | 95 | 101 | 113 | 105 | 108 | 101 | 118 | 124 | 114 | 104 | 100 | 98 | 97 | 116 | 103 | 105 | 123 | 117 | 117 | 108 | 101 | 96 | 98 | 99 | 105 | 119 | 112 | 117 | 120 | 105 | 111 | 119 | 114 | 116 | 104 | 120 | 110 | 114 | 101 | 103 | 108.054546 | NaN | NaN | NaN |
| 50 | 25/1/2024 | 109 | 99 | 119 | 97 | 111 | 99 | 94 | 111 | 118 | 101 | 117 | 115 | 102 | 101 | 100 | 95 | 102 | 113 | 105 | 108 | 101 | 118 | 124 | 114 | 104 | 100 | 98 | 97 | 116 | 103 | 105 | 123 | 117 | 117 | 109 | 101 | 96 | 99 | 99 | 105 | 119 | 113 | 117 | 120 | 105 | 111 | 119 | 115 | 116 | 104 | 120 | 110 | 114 | 101 | 103 | 108.160000 | NaN | NaN | NaN |
| 51 | 27/1/2024 | 109 | 99 | 119 | 97 | 111 | 100 | 94 | 111 | 118 | 101 | 117 | 116 | 103 | 101 | 100 | 95 | 102 | 113 | 105 | 108 | 101 | 118 | 124 | 114 | 104 | 100 | 98 | 97 | 116 | 103 | 105 | 123 | 117 | 117 | 109 | 101 | 96 | 100 | 99 | 105 | 120 | 113 | 117 | 120 | 105 | 112 | 119 | 115 | 116 | 104 | 120 | 110 | 114 | 101 | 104 | 108.290000 | NaN | NaN | NaN |
| 52 | 30/1/2024 | 109 | 99 | 120 | 97 | 111 | 100 | 94 | 111 | 119 | 102 | 117 | 116 | 104 | 101 | 100 | 95 | 102 | 113 | 105 | 108 | 101 | 118 | 124 | 114 | 104 | 100 | 98 | 97 | 116 | 103 | 105 | 123 | 117 | 117 | 109 | 101 | 96 | 100 | 99 | 106 | 120 | 113 | 117 | 120 | 105 | 112 | 119 | 115 | 117 | 104 | 120 | 111 | 114 | 101 | 104 | 108.420000 | NaN | NaN | NaN |
| 53 | 1/2/2024 | 109 | 100 | 120 | 97 | 111 | 100 | 95 | 111 | 119 | 103 | 117 | 116 | 104 | 101 | 100 | 95 | 102 | 113 | 105 | 108 | 101 | 119 | 124 | 114 | 104 | 100 | 98 | 97 | 116 | 103 | 105 | 124 | 117 | 117 | 109 | 101 | 96 | 100 | 100 | 107 | 120 | 113 | 117 | 120 | 105 | 112 | 119 | 115 | 117 | 104 | 120 | 111 | 114 | 101 | 104 | 108.550000 | 1.015799708 | NaN | NaN |
| 54 | 3/2/2024 | 109 | 100 | 120 | 98 | 111 | 101 | 96 | 111 | 119 | 103 | 117 | 116 | 105 | 101 | 100 | 95 | 102 | 114 | 105 | 108 | 101 | 119 | 124 | 114 | 104 | 101 | 98 | 97 | 116 | 103 | 105 | 124 | 117 | 117 | 109 | 101 | 96 | 100 | 100 | 107 | 120 | 113 | 117 | 120 | 105 | 112 | 119 | 115 | 118 | 104 | 120 | 111 | 114 | 101 | 104 | 108.670000 | 1.037802307 | NaN | NaN |
| 55 | 6/2/2024 | 109 | 100 | 120 | 98 | 111 | 101 | 96 | 112 | 119 | 103 | 117 | 116 | 105 | 101 | 100 | 95 | 102 | 114 | 106 | 108 | 101 | 119 | 124 | 115 | 104 | 101 | 99 | 97 | 116 | 103 | 105 | 124 | 117 | 118 | 109 | 101 | 96 | 100 | 100 | 107 | 120 | 113 | 117 | 120 | 105 | 113 | 119 | 115 | 118 | 104 | 121 | 111 | 114 | 101 | 104 | 108.800000 | 0.971428571 | NaN | NaN |
| 56 | 8/2/2024 | 109 | 100 | 120 | 98 | 111 | 101 | 96 | 112 | 119 | 103 | 118 | 116 | 105 | 101 | 100 | 95 | 102 | 114 | 106 | 108 | 101 | 120 | 124 | 115 | 104 | 101 | 99 | 97 | 116 | 103 | 106 | 124 | 117 | 118 | 110 | 102 | 96 | 101 | 100 | 107 | 120 | 114 | 117 | 120 | 105 | 113 | 119 | 115 | 118 | 104 | 121 | 111 | 114 | 101 | 104 | 108.930000 | NaN | NaN | NaN |
| 57 | 13/2/2024 | 109 | 100 | 120 | 98 | 111 | 101 | 96 | 113 | 119 | 103 | 118 | 116 | 105 | 101 | 100 | 95 | 103 | 115 | 106 | 108 | 101 | 121 | 124 | 115 | 104 | 101 | 99 | 97 | 116 | 103 | 107 | 124 | 117 | 119 | 110 | 102 | 96 | 101 | 100 | 107 | 120 | 114 | 117 | 120 | 105 | 113 | 119 | 115 | 119 | 104 | 121 | 111 | 114 | 101 | 104 | 109.050000 | NaN | NaN | NaN |
| 58 | 15/2/2024 | 109 | 100 | 121 | 98 | 111 | 101 | 97 | 114 | 119 | 103 | 118 | 116 | 105 | 101 | 100 | 95 | 103 | 116 | 107 | 108 | 102 | 121 | 124 | 115 | 104 | 102 | 99 | 97 | 116 | 103 | 107 | 124 | 117 | 119 | 110 | 102 | 96 | 101 | 100 | 107 | 120 | 114 | 117 | 120 | 105 | 113 | 119 | 115 | 119 | 104 | 121 | 111 | 114 | 101 | 104 | 109.180000 | NaN | NaN | NaN |
| 59 | 17/2/2024 | 109 | 100 | 121 | 98 | 111 | 101 | 97 | 115 | 119 | 103 | 118 | 117 | 105 | 101 | 100 | 95 | 104 | 116 | 107 | 108 | 102 | 121 | 124 | 115 | 104 | 102 | 100 | 97 | 116 | 103 | 107 | 124 | 117 | 119 | 110 | 102 | 96 | 102 | 100 | 107 | 120 | 114 | 117 | 120 | 105 | 113 | 120 | 115 | 119 | 104 | 121 | 111 | 114 | 101 | 105 | 109.310000 | NaN | NaN | NaN |
| 60 | 20/2/2024 | 109 | 100 | 121 | 98 | 112 | 101 | 97 | 115 | 119 | 103 | 118 | 117 | 105 | 101 | 100 | 95 | 104 | 116 | 107 | 108 | 102 | 121 | 124 | 115 | 104 | 102 | 100 | 97 | 116 | 103 | 107 | 124 | 117 | 120 | 110 | 102 | 96 | 102 | 100 | 107 | 120 | 114 | 117 | 120 | 105 | 114 | 120 | 115 | 119 | 105 | 122 | 112 | 114 | 101 | 106 | 109.440000 | NaN | NaN | NaN |
| 61 | 22/2/2024 | 110 | 100 | 121 | 98 | 112 | 101 | 97 | 116 | 119 | 103 | 118 | 117 | 105 | 101 | 100 | 95 | 104 | 116 | 108 | 108 | 102 | 121 | 124 | 116 | 104 | 102 | 100 | 97 | 116 | 103 | 108 | 124 | 117 | 120 | 111 | 102 | 96 | 102 | 100 | 107 | 120 | 114 | 117 | 120 | 105 | 114 | 120 | 115 | 119 | 105 | 122 | 112 | 114 | 101 | 107 | 109.560000 | NaN | NaN | NaN |
| 62 | 24/2/2024 | 110 | 100 | 122 | 98 | 112 | 101 | 97 | 116 | 119 | 103 | 118 | 117 | 105 | 101 | 100 | 95 | 104 | 116 | 108 | 108 | 102 | 122 | 124 | 116 | 104 | 103 | 101 | 97 | 116 | 103 | 108 | 124 | 117 | 120 | 111 | 102 | 96 | 103 | 100 | 108 | 120 | 114 | 117 | 120 | 105 | 114 | 120 | 115 | 119 | 105 | 122 | 112 | 114 | 101 | 107 | 109.670000 | NaN | NaN | NaN |
2. Hàm định dạng lại đúng, kiểm tra kiểu Ngày/Tháng/Năm - dd/mm/yyyy
# Chuyển đổi cột ngày tháng thành định dạng 'yyyy/mm/dd'
df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')
# Hiển thị DataFrame đã chuyển đổi
print(f"Date range of gold from - {df.loc[:,'Date'][0]} to {df.loc[:,'Date'][len(df)-1]}")
# Tạo DatetimeIndex từ '9/28/2023' đến ngày cuối cùng trong DataFrame df
daterange = pd.date_range(start='24/09/2023', end=df.loc[:, 'Date'].iloc[-1], freq='D')
formatted_date = daterange.strftime('%d/%m/%Y')
# Thay thế ngày cuối cùng bằng ngày trong DataFrame df
print(formatted_date)
Date range of gold from - 2023-09-28 00:00:00 to 2024-02-24 00:00:00
Index(['24/09/2023', '25/09/2023', '26/09/2023', '27/09/2023', '28/09/2023',
'29/09/2023', '30/09/2023', '01/10/2023', '02/10/2023', '03/10/2023',
...
'15/02/2024', '16/02/2024', '17/02/2024', '18/02/2024', '19/02/2024',
'20/02/2024', '21/02/2024', '22/02/2024', '23/02/2024', '24/02/2024'],
dtype='object', length=154)
3. Các Hàm thủ tục Kiểm tra Dữ liệu --> Validate and Cleaning Data
3.1. Hàm chống trùng lặp dữ liệudf = df.drop_duplicates()
df.shape
(63, 60)
3. Các Hàm thủ tục Kiểm tra Dữ liệu --> Validate and Cleaning Data
3.2. Hàm matplotlib.pyplot vẽ biểu đồ kiểm tra tính logic của dữ liệuimport pandas as pd
import matplotlib.pyplot as plt
# Đọc dữ liệu từ file csv
data = pd.read_csv(r"C:\Python311\workspaces\P6B55.csv")
# Thiết lập kích thước biểu đồ
plt.figure(figsize=(10, 6))
# Vẽ các đường line từ S01 đến S55
for column in data.columns[1:56]:
plt.plot(data['Date'], data[column], label=column)
# Thiết lập tiêu đề và các trục
plt.title('Biểu đồ thống kê số lần')
plt.xlabel('Ngày')
plt.ylabel('Số lần')
# Xoay đứng trục ngày tháng
plt.xticks(rotation='vertical')
# Hiển thị grid
plt.grid(True)
# Hiển thị chú thích
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
# Hiển thị biểu đồ
plt.show()
3. Các Hàm thủ tục Kiểm tra Dữ liệu --> Validate and Cleaning Data
3.3. Hàm describe() tính toán các chỉ số max, min, 25% tối thiểu, 50% trung bình, 75% hiệu suất để kiểm tra tính hợp lệ của dữ liệuround(df.describe(),0)
| Date | S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9 | S10 | S11 | S12 | S13 | S14 | S15 | S16 | S17 | S18 | S19 | S20 | S21 | S22 | S23 | S24 | S25 | S26 | S27 | S28 | S29 | S30 | S31 | S32 | S33 | S34 | S35 | S36 | S37 | S38 | S39 | S40 | S41 | S42 | S43 | S44 | S45 | S46 | S47 | S48 | S49 | S50 | S51 | S52 | S53 | S54 | S55 | ST | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 63 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 | 63.0 |
| mean | 2023-12-11 18:40:00 | 107.0 | 96.0 | 118.0 | 96.0 | 109.0 | 97.0 | 91.0 | 111.0 | 114.0 | 99.0 | 116.0 | 113.0 | 99.0 | 98.0 | 98.0 | 93.0 | 98.0 | 111.0 | 104.0 | 104.0 | 98.0 | 117.0 | 121.0 | 112.0 | 102.0 | 98.0 | 96.0 | 93.0 | 114.0 | 102.0 | 104.0 | 119.0 | 115.0 | 113.0 | 105.0 | 101.0 | 93.0 | 96.0 | 97.0 | 103.0 | 118.0 | 110.0 | 114.0 | 119.0 | 103.0 | 110.0 | 116.0 | 110.0 | 114.0 | 102.0 | 118.0 | 104.0 | 112.0 | 98.0 | 102.0 | 106.0 |
| min | 2023-09-28 00:00:00 | 103.0 | 94.0 | 113.0 | 91.0 | 107.0 | 94.0 | 88.0 | 108.0 | 108.0 | 94.0 | 113.0 | 110.0 | 94.0 | 93.0 | 94.0 | 90.0 | 94.0 | 108.0 | 102.0 | 99.0 | 94.0 | 114.0 | 116.0 | 108.0 | 100.0 | 94.0 | 92.0 | 89.0 | 110.0 | 99.0 | 103.0 | 115.0 | 111.0 | 107.0 | 102.0 | 97.0 | 86.0 | 92.0 | 94.0 | 100.0 | 114.0 | 108.0 | 111.0 | 113.0 | 100.0 | 105.0 | 108.0 | 104.0 | 111.0 | 97.0 | 115.0 | 98.0 | 109.0 | 97.0 | 100.0 | 102.0 |
| 25% | 2023-11-05 12:00:00 | 105.0 | 94.0 | 115.0 | 93.0 | 108.0 | 95.0 | 88.0 | 110.0 | 110.0 | 95.0 | 115.0 | 112.0 | 97.0 | 97.0 | 96.0 | 92.0 | 96.0 | 108.0 | 103.0 | 102.0 | 96.0 | 116.0 | 120.0 | 110.0 | 101.0 | 97.0 | 94.0 | 90.0 | 112.0 | 101.0 | 103.0 | 116.0 | 114.0 | 109.0 | 104.0 | 101.0 | 92.0 | 94.0 | 94.0 | 102.0 | 116.0 | 109.0 | 113.0 | 118.0 | 101.0 | 109.0 | 115.0 | 107.0 | 111.0 | 100.0 | 116.0 | 100.0 | 110.0 | 97.0 | 101.0 | 104.0 |
| 50% | 2023-12-12 00:00:00 | 107.0 | 96.0 | 118.0 | 97.0 | 109.0 | 98.0 | 92.0 | 111.0 | 115.0 | 100.0 | 115.0 | 113.0 | 99.0 | 98.0 | 97.0 | 94.0 | 98.0 | 110.0 | 105.0 | 104.0 | 98.0 | 117.0 | 120.0 | 112.0 | 102.0 | 99.0 | 95.0 | 94.0 | 113.0 | 101.0 | 103.0 | 117.0 | 116.0 | 112.0 | 105.0 | 101.0 | 94.0 | 95.0 | 97.0 | 102.0 | 118.0 | 110.0 | 113.0 | 119.0 | 101.0 | 109.0 | 118.0 | 110.0 | 113.0 | 103.0 | 118.0 | 103.0 | 112.0 | 98.0 | 103.0 | 106.0 |
| 75% | 2024-01-17 00:00:00 | 109.0 | 99.0 | 119.0 | 97.0 | 111.0 | 98.0 | 94.0 | 111.0 | 118.0 | 101.0 | 117.0 | 114.0 | 100.0 | 101.0 | 100.0 | 95.0 | 101.0 | 113.0 | 105.0 | 108.0 | 101.0 | 118.0 | 123.0 | 114.0 | 103.0 | 100.0 | 97.0 | 97.0 | 115.0 | 103.0 | 105.0 | 122.0 | 116.0 | 116.0 | 108.0 | 101.0 | 96.0 | 96.0 | 99.0 | 104.0 | 119.0 | 112.0 | 117.0 | 120.0 | 105.0 | 111.0 | 119.0 | 113.0 | 114.0 | 104.0 | 119.0 | 110.0 | 114.0 | 100.0 | 103.0 | 108.0 |
| max | 2024-02-24 00:00:00 | 110.0 | 100.0 | 122.0 | 98.0 | 112.0 | 101.0 | 97.0 | 116.0 | 119.0 | 103.0 | 118.0 | 117.0 | 105.0 | 101.0 | 100.0 | 95.0 | 104.0 | 116.0 | 108.0 | 108.0 | 102.0 | 122.0 | 124.0 | 116.0 | 104.0 | 103.0 | 101.0 | 97.0 | 116.0 | 103.0 | 108.0 | 124.0 | 117.0 | 120.0 | 111.0 | 102.0 | 96.0 | 103.0 | 100.0 | 108.0 | 120.0 | 114.0 | 117.0 | 120.0 | 105.0 | 114.0 | 120.0 | 115.0 | 119.0 | 105.0 | 122.0 | 112.0 | 114.0 | 101.0 | 107.0 | 110.0 |
| std | NaN | 2.0 | 2.0 | 2.0 | 2.0 | 1.0 | 2.0 | 3.0 | 2.0 | 4.0 | 3.0 | 2.0 | 2.0 | 3.0 | 3.0 | 2.0 | 2.0 | 3.0 | 2.0 | 1.0 | 3.0 | 3.0 | 2.0 | 2.0 | 2.0 | 1.0 | 2.0 | 2.0 | 3.0 | 2.0 | 1.0 | 1.0 | 3.0 | 2.0 | 4.0 | 3.0 | 1.0 | 3.0 | 3.0 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 | 2.0 | 3.0 | 4.0 | 3.0 | 2.0 | 2.0 | 5.0 | 2.0 | 2.0 | 2.0 | 2.0 |
3. Các Hàm thủ tục Kiểm tra Dữ liệu --> Validate and Cleaning Data
3.4. Hàm columns kiểm tra xác định tên Trường dữ liệudf.columns
Index(['Date', 'S1', 'S2', 'S3', 'S4', 'S5', 'S6', 'S7', 'S8', 'S9', 'S10',
'S11', 'S12', 'S13', 'S14', 'S15', 'S16', 'S17', 'S18', 'S19', 'S20',
'S21', 'S22', 'S23', 'S24', 'S25', 'S26', 'S27', 'S28', 'S29', 'S30',
'S31', 'S32', 'S33', 'S34', 'S35', 'S36', 'S37', 'S38', 'S39', 'S40',
'S41', 'S42', 'S43', 'S44', 'S45', 'S46', 'S47', 'S48', 'S49', 'S50',
'S51', 'S52', 'S53', 'S54', 'S55', 'ST', 'Link', 'Type', 'BD'],
dtype='object')
3. Các Hàm thủ tục Kiểm tra Dữ liệu --> Validate and Cleaning Data
3.5. Hàm info() kiểm tra phân loại Kiểu dữ liệu non-null, dtypes: datetime64[ns](1), float64(1), int64(55), object(3)df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 63 entries, 0 to 62 Data columns (total 60 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Date 63 non-null datetime64[ns] 1 S1 63 non-null int64 2 S2 63 non-null int64 3 S3 63 non-null int64 4 S4 63 non-null int64 5 S5 63 non-null int64 6 S6 63 non-null int64 7 S7 63 non-null int64 8 S8 63 non-null int64 9 S9 63 non-null int64 10 S10 63 non-null int64 11 S11 63 non-null int64 12 S12 63 non-null int64 13 S13 63 non-null int64 14 S14 63 non-null int64 15 S15 63 non-null int64 16 S16 63 non-null int64 17 S17 63 non-null int64 18 S18 63 non-null int64 19 S19 63 non-null int64 20 S20 63 non-null int64 21 S21 63 non-null int64 22 S22 63 non-null int64 23 S23 63 non-null int64 24 S24 63 non-null int64 25 S25 63 non-null int64 26 S26 63 non-null int64 27 S27 63 non-null int64 28 S28 63 non-null int64 29 S29 63 non-null int64 30 S30 63 non-null int64 31 S31 63 non-null int64 32 S32 63 non-null int64 33 S33 63 non-null int64 34 S34 63 non-null int64 35 S35 63 non-null int64 36 S36 63 non-null int64 37 S37 63 non-null int64 38 S38 63 non-null int64 39 S39 63 non-null int64 40 S40 63 non-null int64 41 S41 63 non-null int64 42 S42 63 non-null int64 43 S43 63 non-null int64 44 S44 63 non-null int64 45 S45 63 non-null int64 46 S46 63 non-null int64 47 S47 63 non-null int64 48 S48 63 non-null int64 49 S49 63 non-null int64 50 S50 63 non-null int64 51 S51 63 non-null int64 52 S52 63 non-null int64 53 S53 63 non-null int64 54 S54 63 non-null int64 55 S55 63 non-null int64 56 ST 63 non-null float64 57 Link 4 non-null object 58 Type 1 non-null object 59 BD 1 non-null object dtypes: datetime64[ns](1), float64(1), int64(55), object(3) memory usage: 29.7+ KB
3. Các Hàm thủ tục Kiểm tra Dữ liệu --> Validate and Cleaning Data
3.6. Hàm .isnull().sum() kiểm tra các giá trị supervisor nhập vào thiếu/đủ/thừa giá trịdf.isnull().sum()
Date 0 S1 0 S2 0 S3 0 S4 0 S5 0 S6 0 S7 0 S8 0 S9 0 S10 0 S11 0 S12 0 S13 0 S14 0 S15 0 S16 0 S17 0 S18 0 S19 0 S20 0 S21 0 S22 0 S23 0 S24 0 S25 0 S26 0 S27 0 S28 0 S29 0 S30 0 S31 0 S32 0 S33 0 S34 0 S35 0 S36 0 S37 0 S38 0 S39 0 S40 0 S41 0 S42 0 S43 0 S44 0 S45 0 S46 0 S47 0 S48 0 S49 0 S50 0 S51 0 S52 0 S53 0 S54 0 S55 0 ST 0 Link 59 Type 62 BD 62 dtype: int64
3. Các Hàm thủ tục Kiểm tra Dữ liệu --> Validate and Cleaning Data
3.7. Hàm .isnull() kiểm tra các giá trị supervisor nhập vào sai/đúng kiểu giá trịdf.isnull()
| Date | S1 | S2 | S3 | S4 | S5 | S6 | S7 | S8 | S9 | S10 | S11 | S12 | S13 | S14 | S15 | S16 | S17 | S18 | S19 | S20 | S21 | S22 | S23 | S24 | S25 | S26 | S27 | S28 | S29 | S30 | S31 | S32 | S33 | S34 | S35 | S36 | S37 | S38 | S39 | S40 | S41 | S42 | S43 | S44 | S45 | S46 | S47 | S48 | S49 | S50 | S51 | S52 | S53 | S54 | S55 | ST | Link | Type | BD | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False |
| 1 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 2 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 3 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 4 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 5 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 6 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 7 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 8 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 9 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 10 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 11 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 12 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 13 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 14 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 15 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 16 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 17 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 18 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 19 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 20 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 21 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 22 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 23 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 24 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 25 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 26 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 27 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 28 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 29 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 30 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 31 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 32 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 33 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 34 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 35 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 36 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 37 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 38 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 39 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 40 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 41 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 42 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 43 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 44 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 45 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 46 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 47 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 48 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 49 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 50 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 51 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 52 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 53 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True |
| 54 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True |
| 55 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True |
| 56 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 57 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 58 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 59 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 60 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 61 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
| 62 | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | False | True | True | True |
3. Các Hàm thủ tục Kiểm tra Dữ liệu --> Validate and Cleaning Data
3.8. Hàm .duplicated().sum() kiểm tra các giá trị, tổng supervisor nhập vào bị trùng lặp giá trịdf.duplicated().sum()
0
3. Các Hàm thủ tục Kiểm tra Dữ liệu --> Validate and Cleaning Data
3.9. Hàm describe().T Bảng mở rộng tính toán các chỉ số: - max, - min, - 25% tối thiểu, - 50% trung bình, - 75% hiệu suất để kiểm tra tính hợp lệ của dữ liệu#EDA
df.describe().T
# Trong hàm df.describe().T, cột "std" đại diện cho độ lệch chuẩn (standard deviation) của dữ liệu trong các cột tương ứng.
# Độ lệch chuẩn là một số đo mô tả mức độ phân tán của dữ liệu xung quanh giá trị trung bình.
# Công thức tính độ lệch chuẩn là căn bậc hai của phương sai (variance), và được tính bằng cách lấy căn bậc hai của trung bình của
# bình phương của độ lệch của mỗi giá trị dữ liệu so với giá trị trung bình. Công thức chính xác như sau:
# std = sqrt(mean((x - x.mean())**2))
# Trong trường hợp của bạn, giá trị "std" là 1.8959 cho một cột và 2.03572 cho cột khác.
# Khi so sánh giá trị độ lệch chuẩn giữa các cột, giá trị lớn hơn có nghĩa là dữ liệu trong cột đó có mức độ phân tán lớn hơn so với cột khác.
| count | mean | min | 25% | 50% | 75% | max | std | |
|---|---|---|---|---|---|---|---|---|
| Date | 63 | 2023-12-11 18:40:00 | 2023-09-28 00:00:00 | 2023-11-05 12:00:00 | 2023-12-12 00:00:00 | 2024-01-17 00:00:00 | 2024-02-24 00:00:00 | NaN |
| S1 | 63.0 | 106.873016 | 103.0 | 105.0 | 107.0 | 109.0 | 110.0 | 1.987802 |
| S2 | 63.0 | 96.47619 | 94.0 | 94.0 | 96.0 | 99.0 | 100.0 | 2.292042 |
| S3 | 63.0 | 117.714286 | 113.0 | 115.0 | 118.0 | 119.0 | 122.0 | 2.135934 |
| S4 | 63.0 | 95.666667 | 91.0 | 93.0 | 97.0 | 97.0 | 98.0 | 2.055677 |
| S5 | 63.0 | 109.301587 | 107.0 | 108.0 | 109.0 | 111.0 | 112.0 | 1.398558 |
| S6 | 63.0 | 97.174603 | 94.0 | 95.0 | 98.0 | 98.0 | 101.0 | 2.261456 |
| S7 | 63.0 | 91.460317 | 88.0 | 88.0 | 92.0 | 94.0 | 97.0 | 3.047079 |
| S8 | 63.0 | 110.952381 | 108.0 | 110.0 | 111.0 | 111.0 | 116.0 | 1.590583 |
| S9 | 63.0 | 113.936508 | 108.0 | 110.0 | 115.0 | 118.0 | 119.0 | 4.007545 |
| S10 | 63.0 | 98.698413 | 94.0 | 95.0 | 100.0 | 101.0 | 103.0 | 3.319711 |
| S11 | 63.0 | 115.571429 | 113.0 | 115.0 | 115.0 | 117.0 | 118.0 | 1.531542 |
| S12 | 63.0 | 113.285714 | 110.0 | 111.5 | 113.0 | 114.5 | 117.0 | 2.120777 |
| S13 | 63.0 | 99.349206 | 94.0 | 97.0 | 99.0 | 100.0 | 105.0 | 3.085652 |
| S14 | 63.0 | 98.190476 | 93.0 | 97.0 | 98.0 | 101.0 | 101.0 | 2.54544 |
| S15 | 63.0 | 97.714286 | 94.0 | 96.0 | 97.0 | 100.0 | 100.0 | 2.051188 |
| S16 | 63.0 | 93.126984 | 90.0 | 92.0 | 94.0 | 95.0 | 95.0 | 1.78246 |
| S17 | 63.0 | 98.412698 | 94.0 | 96.0 | 98.0 | 101.0 | 104.0 | 3.155307 |
| S18 | 63.0 | 110.84127 | 108.0 | 108.5 | 110.0 | 113.0 | 116.0 | 2.470512 |
| S19 | 63.0 | 104.492063 | 102.0 | 103.0 | 105.0 | 105.0 | 108.0 | 1.29357 |
| S20 | 63.0 | 104.349206 | 99.0 | 102.5 | 104.0 | 107.5 | 108.0 | 2.701008 |
| S21 | 63.0 | 98.0 | 94.0 | 96.0 | 98.0 | 101.0 | 102.0 | 2.596524 |
| S22 | 63.0 | 117.222222 | 114.0 | 116.0 | 117.0 | 118.0 | 122.0 | 1.912981 |
| S23 | 63.0 | 121.0 | 116.0 | 120.0 | 120.0 | 123.0 | 124.0 | 2.071309 |
| S24 | 63.0 | 112.126984 | 108.0 | 110.0 | 112.0 | 114.0 | 116.0 | 2.098325 |
| S25 | 63.0 | 102.079365 | 100.0 | 101.0 | 102.0 | 103.0 | 104.0 | 1.45138 |
| S26 | 63.0 | 98.428571 | 94.0 | 97.0 | 99.0 | 100.0 | 103.0 | 2.353544 |
| S27 | 63.0 | 95.587302 | 92.0 | 94.0 | 95.0 | 97.0 | 101.0 | 2.084001 |
| S28 | 63.0 | 93.380952 | 89.0 | 90.5 | 94.0 | 97.0 | 97.0 | 3.118253 |
| S29 | 63.0 | 113.539683 | 110.0 | 112.0 | 113.0 | 115.0 | 116.0 | 1.838876 |
| S30 | 63.0 | 101.777778 | 99.0 | 101.0 | 101.0 | 103.0 | 103.0 | 1.113617 |
| S31 | 63.0 | 104.047619 | 103.0 | 103.0 | 103.0 | 105.0 | 108.0 | 1.407681 |
| S32 | 63.0 | 118.587302 | 115.0 | 116.0 | 117.0 | 122.0 | 124.0 | 3.406043 |
| S33 | 63.0 | 115.111111 | 111.0 | 114.0 | 116.0 | 116.5 | 117.0 | 1.751599 |
| S34 | 63.0 | 112.650794 | 107.0 | 109.0 | 112.0 | 116.0 | 120.0 | 4.04873 |
| S35 | 63.0 | 105.428571 | 102.0 | 103.5 | 105.0 | 107.5 | 111.0 | 2.780777 |
| S36 | 63.0 | 100.730159 | 97.0 | 101.0 | 101.0 | 101.0 | 102.0 | 0.970639 |
| S37 | 63.0 | 93.095238 | 86.0 | 92.0 | 94.0 | 96.0 | 96.0 | 3.019903 |
| S38 | 63.0 | 96.047619 | 92.0 | 94.0 | 95.0 | 96.5 | 103.0 | 2.732295 |
| S39 | 63.0 | 96.968254 | 94.0 | 94.0 | 97.0 | 99.0 | 100.0 | 2.33465 |
| S40 | 63.0 | 103.190476 | 100.0 | 102.0 | 102.0 | 104.5 | 108.0 | 2.169117 |
| S41 | 63.0 | 117.746032 | 114.0 | 116.0 | 118.0 | 119.0 | 120.0 | 1.731755 |
| S42 | 63.0 | 110.412698 | 108.0 | 109.0 | 110.0 | 112.0 | 114.0 | 1.897663 |
| S43 | 63.0 | 114.301587 | 111.0 | 113.0 | 113.0 | 117.0 | 117.0 | 2.037035 |
| S44 | 63.0 | 118.52381 | 113.0 | 118.0 | 119.0 | 120.0 | 120.0 | 1.644709 |
| S45 | 63.0 | 102.539683 | 100.0 | 101.0 | 101.0 | 105.0 | 105.0 | 1.847626 |
| S46 | 63.0 | 109.714286 | 105.0 | 109.0 | 109.0 | 111.0 | 114.0 | 2.105512 |
| S47 | 63.0 | 116.333333 | 108.0 | 115.0 | 118.0 | 119.0 | 120.0 | 3.287317 |
| S48 | 63.0 | 110.253968 | 104.0 | 107.0 | 110.0 | 113.0 | 115.0 | 3.754431 |
| S49 | 63.0 | 113.539683 | 111.0 | 111.0 | 113.0 | 114.0 | 119.0 | 2.650778 |
| S50 | 63.0 | 101.666667 | 97.0 | 100.0 | 103.0 | 104.0 | 105.0 | 2.293047 |
| S51 | 63.0 | 117.793651 | 115.0 | 116.0 | 118.0 | 119.0 | 122.0 | 2.017334 |
| S52 | 63.0 | 104.492063 | 98.0 | 100.5 | 103.0 | 109.5 | 112.0 | 4.624176 |
| S53 | 63.0 | 111.888889 | 109.0 | 110.0 | 112.0 | 114.0 | 114.0 | 1.814912 |
| S54 | 63.0 | 98.492063 | 97.0 | 97.0 | 98.0 | 100.0 | 101.0 | 1.644865 |
| S55 | 63.0 | 102.444444 | 100.0 | 101.0 | 103.0 | 103.0 | 107.0 | 1.643931 |
| ST | 63.0 | 105.867662 | 102.0 | 104.015 | 105.763636 | 107.735 | 109.67 | 2.202043 |
3. Các Hàm thủ tục Kiểm tra Dữ liệu --> Vaidate and Cleaning Data
3.10. Hàm describe(include="object") kiểm tra tính hợp lệ của dữ liệu dạng Object gồm: string, blob, clob, vchardf.describe(include="object")
| Link | Type | BD | |
|---|---|---|---|
| count | 4 | 1 | 1 |
| unique | 4 | 1 | 1 |
| top | https://vietlott.vn/vi/choi/power-6-55/thong-k... | P7B55 | 01.08.2017 |
| freq | 1 | 1 | 1 |
4. Các Hàm thủ tục Thống kê và Phân tích Dữ liệu --> Analytics/Statistic Data
4.1. Hàm sns.kdeplot Biểu diễn mật độ và độ thay đổi dữ liệu sốimport warnings
warnings.filterwarnings('ignore')
for i in df.select_dtypes(include="number").columns:
plt.figure(figsize=(15,6))
sns.kdeplot(data=df,x=i)
plt.show()
4. Các Hàm thủ tục Thống kê và Phân tích Dữ liệu --> Analytics/Statistic Data
4.2. Hàm sns.kdeplot mở rộng so sánh với Giá trị thực để xác định độ thay đổi dữ liệu số#Để vẽ đồ thị mật độ (density plot) kèm theo độ lệch chuẩn (standard deviation),
#bạn có thể sử dụng thư viện seaborn và matplotlib trong Python. Dưới đây là một ví dụ về cách thực hiện điều này:
# Trong đoạn mã trên, chúng ta sử dụng vòng lặp để duyệt qua từng cột là kiểu dữ liệu số trong dataframe (df).
#Sau đó, chúng ta vẽ đồ thị mật độ bằng hàm kdeplot từ thư viện seaborn.
#Để xác định độ lệch chuẩn, chúng ta sử dụng hàm mean() để tính giá trị trung bình và hàm std()
#để tính độ lệch chuẩn của cột tương ứng. Cuối cùng, chúng ta sử dụng hàm axvline() từ matplotlib
#để vẽ các đường dọc đại diện cho giá trị trung bình và độ lệch chuẩn.
# Lưu ý rằng đoạn mã trên giả định rằng dữ liệu trong dataframe của bạn đã được đọc và xử lý đúng cách trước đó.
import seaborn as sns
import matplotlib.pyplot as plt
# Vẽ đồ thị mật độ kèm theo độ lệch chuẩn
for col in df.select_dtypes(include="number").columns:
plt.figure(figsize=(15, 6))
sns.kdeplot(data=df, x=col)
mean = df[col].mean()
std = df[col].std()
plt.axvline(x=mean, color='r', linestyle='--', label='Mean')
plt.axvline(x=mean + std, color='g', linestyle='--', label='Mean + Std')
plt.axvline(x=mean - std, color='g', linestyle='--', label='Mean - Std')
plt.legend()
plt.show()
4. Các Hàm thủ tục Thống kê và Phân tích Dữ liệu --> Analytics/Statistic Data
4.3. Hàm sns.boxplot mở rộng so sánh với Giá trị thực để xác định độ thay đổi / tổng từng giá trị của dữ liệu số- Chú thích: Hàm sns.boxplot trong thư viện Seaborn được sử dụng để vẽ biểu đồ hộp (box plot). Biểu đồ hộp cho phép chúng ta hiển thị phân phối của một biến dữ liệu và các thông số thống kê liên quan. Thông qua biểu đồ hộp, chúng ta có thể trực quan hóa các thông số như giá trị trung vị (median), phạm vi (range), tứ phân vị (quartiles), và các giá trị ngoại lệ (outliers). Điều này giúp chúng ta có cái nhìn tổng quan về sự phân bố và biến động của dữ liệu
Tuy nhiên, trong phân tích giá trị về diễn biến tổng khối lượng so với giá trị diễn biến thay đổi như nến (volume trong chứng khoán), biểu đồ hộp có thể không phù ợp. Thông thường, biểu đồ hộp được sử dụng để phân tích các biến dữ liệu số (numerical variables) và không có sự phụ thuộc giữa các mẫu dữ li u.
Trong trường hợp giá trị diễn biến tổng khối lượng và giá trị diễn biến thay đổi như nến trong chứng khoán, có thể sử dụng các biểu đồ khác như biểu đồ đường (line plot) hoặc biểu đồ thanh (bar plot) để biểu diễn sự biến đổi của dữ liệu theo thời gian hoặc các nhóm khác nhau.
for i in df.select_dtypes(include="number").columns:
plt.figure(figsize=(15,6))
sns.boxplot(data=df,x=i)
plt.show()
4. Các Hàm thủ tục Thống kê và Phân tích Dữ liệu --> Analytics/Statistic Data
4.4. Hàm sns.scatterplot so sánh với Giá trị thực để xác định một độ phân bố và độ thay đổi dữ liệu số Chú thích: hàm sns.scatterplot. Hàm này trong thư viện Seaborn được sử dụng để tạo biểu đồ phân tán (scatter plot), giúp chúng ta quan sát và so sánh mối quan hệ giữa hai biến dữ liệu số.Biểu đồ phân tán biểu thị các điểm dữ liệu trên một không gian hai chiều, trong đó mỗi điểm dữ liệu được đại diện bởi một điểm trên biểu đồ. Trục x và trục y thường biểu thị hai biến dữ liệu mà chúng ta muốn so sánh. Điểm dữ liệu trên biểu đồ phân tán có thể có các mức độ tương quan khác nhau, từ tương quan dương (các điểm tăng theo cùng một hướng) đến tương quan âm (các điểm giảm theo cùng một hướng) và không có tương quan.
Biểu đồ phân tán giúp chúng ta đánh giá mức độ phân bố và độ thay đổi của dữ liệu số. Nó cho phép chúng ta xem xét các mẫu dữ liệu và tìm hiểu mối quan hệ giữa các biến số. Bằng cách xem xét biểu đồ phân tán, chúng ta có thể nhận ra các mẫu, xu hướng và sự biến đổi trong dữ liệu.
Tóm lại, hàm sns.scatterplot cho phép chúng ta so sánh và phân tích mối quan hệ giữa hai biến số, từ đó xác định được độ phân bố và độ thay đổi của dữ liệu số.
import seaborn as sns
import matplotlib.pyplot as plt
for i in ['S1', 'S2', 'S3', 'S4', 'S5', 'S6', 'S7', 'S8', 'S9',
'S10', 'S11', 'S12', 'S13', 'S14', 'S15', 'S16', 'S17', 'S18', 'S19',
'S20', 'S21', 'S22', 'S23', 'S24', 'S25', 'S26', 'S27', 'S28', 'S29',
'S30', 'S31', 'S32', 'S33', 'S34', 'S35', 'S36', 'S37', 'S38', 'S39',
'S40', 'S41', 'S42', 'S43', 'S44', 'S45', 'S46', 'S47', 'S48', 'S49',
'S50', 'S51', 'S52', 'S53', 'S54', 'S55']:
plt.figure(figsize=(15,6))
sns.scatterplot(data=df,y='Date',x=i)
plt.grid()
plt.show()
4. Các Hàm thủ tục Thống kê và Phân tích Dữ liệu --> Analytics/Statistic Data
4.5. Hàm sns.kdeplot và sns.scatterplot có thể được kết hợp với nhau để cung cấp một cái nhìn toàn diện hơn về phân bố và mối quan hệ giữa hai biến số. Chú thích:Hàm sns.kdeplot trong thư viện Seaborn được sử dụng để vẽ đồ thị mật độ kernel (kernel density plot), biểu diễn phân bố xác suất của một biến số. Nó tạo ra một đường cong mượt để cho thấy mật độ xác suất của dữ liệu. Điều này giúp chúng ta xác định các đỉnh, đồi, và đáy của phân bố và hiểu rõ hơn về phân phối của biến số.
Khi kết hợp với hàm sns.scatterplot, chúng ta có thể đồng thời hiển thị cả mô hình phân bố và mối quan hệ giữa hai biến số. Bằng cách sử dụng sns.kdeplot để vẽ đường cong mật độ kernel cho mỗi biến số và sử dụng sns.scatterplot để vẽ các điểm dữ liệu tương ứng, chúng ta có thể quan sát cả mô hình phân bố và mối quan hệ tương quan giữa hai biến.
Việc kết hợp hai hàm này cho phép chúng ta nhìn thấy một cách trực quan mối quan hệ giữa các biến số và biết được cách chúng phân bố trong không gian. Điều này có thể giúp chúng ta tìm ra các mẫu, xu hướng, và sự biến đổi trong dữ liệu, cung cấp thông tin quan trọng cho phân tích và hiểu rõ hơn về mối quan hệ giữa các biến số.
Tóm lại, việc kết hợp hàm sns.kdeplot và sns.scatterplot cho phép chúng ta trực quan hóa đồ thị mật độ kernel và biểu đồ phân tán để cung cấp cái nhìn toàn diện hơn về phân bố và mối quan hệ giữa hai biến số.
import seaborn as sns
import matplotlib.pyplot as plt
# Vẽ đồ thị phân bố sắp xếp giá trị số lần theo ngày
for i in ['S1', 'S2', 'S3', 'S4', 'S5', 'S6', 'S7', 'S8', 'S9',
'S10', 'S11', 'S12', 'S13', 'S14', 'S15', 'S16', 'S17', 'S18', 'S19',
'S20', 'S21', 'S22', 'S23', 'S24', 'S25', 'S26', 'S27', 'S28', 'S29',
'S30', 'S31', 'S32', 'S33', 'S34', 'S35', 'S36', 'S37', 'S38', 'S39',
'S40', 'S41', 'S42', 'S43', 'S44', 'S45', 'S46', 'S47', 'S48', 'S49',
'S50', 'S51', 'S52', 'S53', 'S54', 'S55']:
plt.figure(figsize=(15, 6))
sns.kdeplot(data=df, y='Date', x=i)
sns.scatterplot(data=df, y='Date', x=i, color='red')
std = df[i].std()
plt.axvline(x=std, color='g', linestyle='--', label='Std')
plt.xlabel(i + 'std')
plt.ylabel('Date')
plt.legend()
plt.grid()
plt.show()
- Điều này cho thấy việc tổ chức dữ liệu chi tiết phải được nghiên cứu và sửa lại thành mảng ma trận chữ nhật có cột thể hiện 7 số hãng và dòng phải có tối thiểu 29 - 31 dòng.
- Vị trí các số hạng phải được bố trí ở các cột và khi thay đổi theo giải quay hàng kỳ sẽ chỉ thay đổi theo dòng và cột (các giá trị cũ chỉ thay đổi xuống theo từng dòng).
4. Các Hàm thủ tục Thống kê và Phân tích Dữ liệu --> Analytics/Statistic Data
4.6. Thư viện networkx và các hàm như nx.Graph(), add_node(), spring_layout(), và draw_networkx() được kết hợp để làm việc với đồ thị (graph) và vẽ đồ thị một cách trực quan. Chú thích: - Thư viện networkx cung cấp các công cụ và chức năng để làm việc với các loại đồ thị, bao gồm đồ thị vô hướng, đồ thị có hướng, đồ thị đa đỉnh và đa cung, và nhiều hơn nữa. Một trong những đối tượng quan trọng trong networkx là lớp Graph() để tạo và quản lý đồ thị. - Hàm add_node() được sử dụng để thêm đỉnh (node) vào đồ thị. Trong ví dụ của bạn, add_node(f"{i+1}.{j+1}", label=number) thêm một đỉnh vào đồ thị với tên là f"{i+1}.{j+1}" và thuộc tính label có giá trị là number. - Hàm spring_layout() được sử dụng để xác định vị trí của các đỉnh trong đồ thị bằng phương pháp spring layout. Nó sắp xếp các đỉnh sao cho các đỉnh có mối quan hệ gần nhau sẽ được đặt gần nhau hơn trên không gian. - Cuối cùng, hàm draw_networkx() được sử dụng để vẽ đồ thị trực quan dựa trên các thông tin về đỉnh và cung đã được thêm vào đồ thị. Nó tạo ra một biểu đồ với đỉnh và cung được hiển thị một cách rõ ràng và trực quan. Vì vậy, bằng cách kết hợp thư viện networkx và các hàm như nx.Graph(), add_node(), spring_layout(), và draw_networkx(), chúng ta có thể tạo và quản lý đồ thị, xác định vị trí của các đỉnh trong đồ thị, và vẽ đồ thị một cách trực quan để hiển thị mối quan hệ giữa các đỉnh.# Lập bảng ma trận nhiều kỳ quay lote > Chart Cluster Stack P7B55 (17.2.2024)
import networkx as nx
import matplotlib.pyplot as plt
# Tạo đồ thị
G = nx.Graph()
# Thêm các nút vào đồ thị
sequences = [
[60,61,62,63,64,65,66,67,68,69], #x???
[8,12,17,27,38,55,47], #1
[3,7,18,19,21,26], #2
[22,31,34,49], #3
[11,35,36,42], #4
[24,39,46,51], #5
[4,6,13], #6
[32,40], #7
[2,9,10,52], #8
[41], #9
[48], #10
[23], #11
[25,29,54], #12
[20,33], #13
[14,43], #14
[1,5], #15
[28,44], #16
[16,45,50,53], #17
[15], #18
[37], #19
[], #20
[], #21
[30], #22
[], #23
[], #24
[], #25
[], #26
[], #27
[], #28
[], #29
]
#10 chọn liên tiếp tăng sau 10 kỳ gần nhất: 3(10), 26(10), 2(11), 7(14), 8(29), 13(13), 28(17), 30(11), 31(12), 33(14), 35(21), 40(21), 44(13)
for i, sequence in enumerate(sequences):
for j, number in enumerate(sequence):
G.add_node(f"{i+1}.{j+1}", label=number)
# Thêm các cạnh cho quan hệ hình cây số học
for i in range(len(sequences)-1):
for j in range(len(sequences[i])):
G.add_edge(f"{i+1}.{j+1}", f"{i+2}.{j//2+1}")
# Vẽ đồ thị
pos = nx.spring_layout(G) # Vị trí các nút
labels = nx.get_node_attributes(G, 'label') # Nhãn của các nút
plt.figure(figsize=(15, 6))
nx.draw_networkx(G, pos, labels=labels, node_size=100, font_size=9, font_color='red', node_color='none', edge_color='gray')
plt.axis('off')
plt.show()
4. Các Hàm thủ tục Thống kê và Phân tích Dữ liệu --> Analytics/Statistic Data
4.7. Một biểu đồ phân tán (scatter plot) với sự sử dụng của thư viện Matplotlib Mục đích chính của đoạn mã này là: - Tạo dữ liệu ngẫu nhiên: Đầu tiên, dữ liệu ngẫu nhiên được tạo ra với 3 chiều (x, y, scale). Biến x và y chứa các giá trị ngẫu nhiên từ danh sách đã cho, còn biến scale chứa các giá trị ngẫu nhiên từ danh sách đã cho nhưng được nhân với 3. - Tạo đồ thị: Một đối tượng hình ảnh (figure) và trục (axes) được tạo ra sử dụng hàm plt.subplots(). Kích thước của hình ảnh được thiết lập theo kích thước cửa sổ màn hình. Điều này đảm bảo rằng biểu đồ sẽ phù hợp với kích thước hiển thị trên màn hình. - Vẽ biểu đồ phân tán: Sử dụng hàm ax.scatter(), biểu đồ phân tán được vẽ với các điểm dữ liệu được xác định bởi các giá trị x, y và scale. Màu sắc của các điểm được xác định bởi scale và kích thước của các điểm được xác định bởi giá trị tuyệt đối của scale nhân với 3. - Thiết lập tiêu đề và nhãn trục: Tiêu đề của biểu đồ được đặt là "Some random data, created with JupyterLab!". Các nhãn trục x và y được thiết lập bằng cách sử dụng các giá trị duy nhất từ dữ liệu x và y. - Đặt tỉ lệ và lưới: Tỉ lệ của trục y được đặt là 'auto', tạo ra một biểu đồ có tỉ lệ tự động. Lưới được thêm vào biểu đồ bằng cách sử dụng hàm plt.grid(). -Hiển thị biểu đồ: Cuối cùng, biểu đồ được hiển thị bằng cách sử dụng hàm plt.show(). -Tóm lại, đoạn mã trên được sử dụng để tạo ra một biểu đồ phân tán với dữ liệu ngẫu nhiên, mô tả các giá trị của x, y và scale. Mục đích của nó là trực quan hóa dữ liệu và hiển thị biểu đồ phân tán trên màn hình.from matplotlib import pyplot as plt
import numpy as np
# Generate 100 random data points along 3 dimensions, ranging from 1 to 45
x = np.random.choice([5,8,11,19,25,30,31,36,55], size=56)
y = np.random.choice([1,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17,18,19,21,22,24,26,29,30,31,32,33,34,36,37,38,39,41,42,43,44,45,47,48,50,51,52,53,54,55], size=56)
scale = np.random.choice([1,2,3,5,7,9,10,11,12,14,15,16,18,20,21,22,23,25,27,28,29,30,31,32,33,35,37,38,39,40,41,42,43,44,45,48,49,50,51,52,53], size=56)
# Tạo hình ảnh với kích thước cửa sổ màn hình
figure_width, figure_height = plt.rcParams['figure.figsize']
fig, ax = plt.subplots(figsize=(figure_width, figure_height))
#fig, ax = plt.subplots()
# Map each onto a scatterplot we'll create with Matplotlib
ax.scatter(x=x, y=y, c=scale, s=np.abs(scale)*3)
ax.set(title="Some random data, created with JupyterLab!")
# Thêm label tên các số trên trục y
yticks = np.unique(y)
xticks = np.unique(x)
ax.set_xticks(xticks)
ax.set_xticklabels(xticks)
ax.set_yticks(yticks)
ax.set_yticklabels(yticks)
# Đặt tỉ lệ cho trục y
ax.set_aspect('auto')
plt.grid()
plt.show()
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import pyplot as plt
import numpy as np
# Generate 100 random data points along 3 dimensions, ranging from 1 to 45
x = np.random.choice([1,2,3,5,7,9,10,11,12,14,15,16,18,20,21,22,23,25,27,28,29,30,31,32,33,35,37,38,39,40,41,42,43,44,45,48,49,50,51,52,53], size=45)
y = np.random.choice([1,2,3,5,7,9,10,11,12,14,15,16,18,20,21,22,23,25,27,28,29,30,31,32,33,35,37,38,39,40,41,42,43,44,45,48,49,50,51,52,53], size=45)
scale = np.random.choice([1,2,3,5,7,9,10,11,12,14,15,16,18,20,21,22,23,25,27,28,29,30,31,32,33,35,37,38,39,40,41,42,43,44,45,48,49,50,51,52,53], size=45)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Map each onto a 3D scatterplot
ax.scatter(x, y, scale)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Scale')
ax.set_title('Some random data, created with JupyterLab!')
plt.show()
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import pyplot as plt
import numpy as np
# Generate random data points along 6 dimensions
x = np.random.choice(range(1, 10), size=100)
y = np.random.choice(range(1, 10), size=100)
z = np.random.choice(range(1, 10), size=100)
a = np.random.choice(range(1, 10), size=100)
b = np.random.choice(range(1, 10), size=100)
c = np.random.choice(range(1, 10), size=100)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Map each onto a 3D scatterplot
ax.scatter(x, y, z, c=a, s=b*10, alpha=c/10)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('6D Data')
plt.show()
import numpy as np
# Assuming you have sequences as a list of lists
sequences = [
[33,35,14,1,2],
[9,20,12,5,27],
[52,18,40,38,16],
[28,21,7,42,43],
[11,45,44,32,23],
[37,15,53,50,51],
[31,29,30,10,22],
[25,39,49,41,48],
]
# Step 1: Calculate Correlation
correlation_matrix = np.corrcoef(sequences)
# Step 2: Calculate Density
density_values = [len(seq) / float(max(len(seq) for seq in sequences)) for seq in sequences]
# Step 3: Calculate Rating (using a custom complexity metric)
def calculate_rating(sequence):
# Implement your complexity metric here and return the rating
# This can involve calculations based on the values and patterns within the sequence
rating = ...
return rating
ratings = [calculate_rating(seq) for seq in sequences]
# Print the correlation, density, and rating for each sequence
for i, sequence in enumerate(sequences):
print(f"Sequence {i+1}:")
print(f"Correlation: {correlation_matrix[i]}")
print(f"Density: {density_values[i]}")
print(f"Rating: {ratings[i]}")
print()
Sequence 1: Correlation: [ 1. -0.02936609 0.18658581 -0.51864066 -0.00318339 -0.82641389 0.76148697 -0.66801501] Density: 1.0 Rating: Ellipsis Sequence 2: Correlation: [-0.02936609 1. -0.85191055 0.12806596 0.08825973 -0.19775868 0.2628589 0.42467207] Density: 1.0 Rating: Ellipsis Sequence 3: Correlation: [ 0.18658581 -0.85191055 1. -0.24397437 -0.40341927 0.27814777 0.11889916 -0.56886749] Density: 1.0 Rating: Ellipsis Sequence 4: Correlation: [-0.51864066 0.12806596 -0.24397437 1. -0.54861518 0.21385337 -0.73000925 -0.08323958] Density: 1.0 Rating: Ellipsis Sequence 5: Correlation: [-0.00318339 0.08825973 -0.40341927 -0.54861518 1. -0.21661886 0.01973973 0.61254202] Density: 1.0 Rating: Ellipsis Sequence 6: Correlation: [-0.82641389 -0.19775868 0.27814777 0.21385337 -0.21661886 1. -0.41447526 0.45999213] Density: 1.0 Rating: Ellipsis Sequence 7: Correlation: [ 0.76148697 0.2628589 0.11889916 -0.73000925 0.01973973 -0.41447526 1. -0.25620995] Density: 1.0 Rating: Ellipsis Sequence 8: Correlation: [-0.66801501 0.42467207 -0.56886749 -0.08323958 0.61254202 0.45999213 -0.25620995 1. ] Density: 1.0 Rating: Ellipsis
5. Các Hàm thủ tục nâng cao trong kiểm toán Thống kê và Phân tích Dữ liệu --> Analytics/Statistic Data:
- Rating đánh giá: - Xác định quan hệ giữa các số đã chọn theo chuỗi Thời gian - Mật độ Số đã chọn Desity - Xác định 7 số có khả năngimport numpy as np
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
df = pd.read_csv(r"C:\Python311\workspaces\P6B55.csv")
latest_date = '2024-02-17'
def analyze_lottery_numbers(df, latest_date):
pd.set_option("display.max_rows", df.shape[0]+1)
pd.set_option("display.max_columns", 60)
numbers = ['S1', 'S2', 'S3', 'S4', 'S5', 'S6', 'S7', 'S8', 'S9',
'S10', 'S11', 'S12', 'S13', 'S14', 'S15', 'S16', 'S17', 'S18', 'S19',
'S20', 'S21', 'S22', 'S23', 'S24', 'S25', 'S26', 'S27', 'S28', 'S29',
'S30', 'S31', 'S32', 'S33', 'S34', 'S35', 'S36', 'S37', 'S38', 'S39',
'S40', 'S41', 'S42', 'S43', 'S44', 'S45', 'S46', 'S47', 'S48', 'S49',
'S50', 'S51', 'S52', 'S53', 'S54', 'S55']
# Tạo một mảng màu tùy chỉnh với màu sắc tương phản rõ ràng
custom_palette = ['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#FF00FF', '#00FFFF', '#FF8000', '#8000FF', '#00FF80',
'#808080', '#800000', '#008000', '#000080', '#808000', '#800080', '#008080', '#C0C0C0', '#FF8080',
'#80FF80', '#8080FF', '#FFFF80', '#FF80FF', '#80FFFF', '#FFBF00', '#BF00FF', '#00FFBF', '#A0A0A0',
'#BF0000', '#00BF00', '#0000BF', '#BFBF00', '#BF00BF', '#00BFBF', '#404040', '#400000', '#004000',
'#000040', '#404000', '#400040', '#004040', '#606060', '#400000', '#004000', '#000040', '#606000',
'#606040', '#004060', '#808080', '#004000', '#000040', '#400040', '#808000', '#808040', '#004080',
'#A0A0A0', '#008000', '#000080', '#800080', '#A0A000', '#A000A0', '#0080A0']
plt.figure(figsize=(12, 10))
for i, number in enumerate(numbers):
sns.scatterplot(data=df, y='Date', x=number, color=custom_palette[i], label=number)
plt.grid()
# Tạo biểu đồ màu sắc như thanh màu sắc bên cạnh biểu đồ chính
color_legend = [plt.Line2D([0], [0], marker='o', color='w', markerfacecolor=custom_palette[i], markersize=10) for i in range(len(numbers))]
plt.legend(color_legend, numbers, title='Numbers', loc='lower center', bbox_to_anchor=(0.4, -0.3), ncol=9)
plt.show()
analyze_lottery_numbers(df, latest_date)
#Tập hợp 95 <= [] <= 109 scores:
import random
def choose_random_numbers(sequence, k):
sorted_sequence = sorted(sequence) # Sắp xếp dãy số theo thứ tự tăng dần
random_numbers = random.sample(sorted_sequence, k) # Chọn ngẫu nhiên k số từ dãy số đã sắp xếp
return random_numbers
sequence = [1,2,4,6,7,10,13,14,15,16,17,19,20,21,25,26,27,28,30,31,35,36,37,38,39,40,45,50,54,55]
k = 3
random_numbers = choose_random_numbers(sequence, k)
print(random_numbers)
#Tập hợp 110 - 121 scores:
import random
def choose_random_numbers(sequence, k):
sorted_sequence = sorted(sequence) # Sắp xếp dãy số theo thứ tự tăng dần
random_numbers = random.sample(sorted_sequence, k) # Chọn ngẫu nhiên k số từ dãy số đã sắp xếp
return random_numbers
sequence = [3,5,8,9,11,12,18,22,24,29,33,34,41,42,43,44,46,47,48,49,51,52,53]
k = 3
random_numbers = choose_random_numbers(sequence, k)
print(random_numbers)
#Tập hợp 124 scores:
import random
def choose_random_numbers(sequence, k):
sorted_sequence = sorted(sequence) # Sắp xếp dãy số theo thứ tự tăng dần
random_numbers = random.sample(sorted_sequence, k) # Chọn ngẫu nhiên k số từ dãy số đã sắp xếp
return random_numbers
sequence = [23,32]
k = 1
random_numbers = choose_random_numbers(sequence, k)
print(random_numbers)
[27, 39, 20] [49, 24, 8] [23]
Mão:54 26 / 47 16
#1: [27, 1, 19][12, 47, 42][32]
#5: [21, 45, 50][3, 11, 42][32]
#7: [14, 50, 27][12, 47, 42][23]
Dậu:
#1: [2, 40, 31][22, 46, 49][32]
#3: [36, 17, 54][49, 12, 46][32]
#5: [6, 10, 39][11, 8, 24][32]
Cell In[29], line 1 Mão:54 26 / 47 16 ^ SyntaxError: invalid syntax
import numpy as np
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
df = pd.read_csv(r"C:\Python311\workspaces\P6B55.csv")
latest_date = '2024-02-06'
# Xác định độ lệch chuẩn bằng hàm df.describe().T
stats = df.describe().T
print(stats)
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
# Đọc dữ liệu từ tệp CSV
df = pd.read_csv(r"C:\Python311\workspaces\Detail_P7B55.csv")
latest_date = '2024-02-13'
# Chuyển đổi trường Date thành kiểu dữ liệu ngày
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
# Tạo biểu đồ đường cho mỗi mảng và mỗi ngày
for array in range(1, 8):
array_name = 's' + str(array)
plt.plot(df['Date'], df[array_name], label=f'Array {array_name}')
# Cấu hình biểu đồ
plt.xlabel('Ngày')
plt.ylabel('Giá trị')
plt.title('Sự thay đổi của các giá trị theo ngày')
plt.legend()
plt.xticks(rotation=90)
# Hiển thị biểu đồ
plt.show()
import pandas as pd
from sklearn.linear_model import LogisticRegression
# Đọc dữ liệu từ file CSV
df = pd.read_csv(r"C:\Python311\workspaces\p7b55_s1.csv")
# Chọn các cột cần sử dụng cho việc dự báo
features = ['S55']
target = ['id']
# Xây dựng mô hình hồi quy logistic
model = LogisticRegression()
model.fit(df[features], df[target])
# Dự báo khả năng S1 tăng lên 106 hoặc 107 cho các ngày tiếp theo
future_dates = ['65', '66','67','68']
X_future = pd.DataFrame({'S55': [108,109,110,111]})
predictions = model.predict(X_future)
# In kết quả dự báo
for date, prediction in zip(future_dates, predictions):
print(f'Ngày {date}: Khả năng S55 tăng lên {prediction}')
6. Hàm nâng cao Quadratic Comparison Method - QCM với ma trận giá trị chữ nhật
import pandas as pd
import matplotlib.pyplot as plt
def qcm_rectangle(matrix):
ratings = []
colors = []
for i in range(2, matrix.shape[1]):
rating = 0
for j in range(2, matrix.shape[1]):
if i == j:
continue
if matrix.iloc[:, i].sum() > matrix.iloc[:, j].sum():
rating += 1
elif matrix.iloc[:, i].sum() < matrix.iloc[:, j].sum():
rating -= 1
ratings.append(rating)
if rating > 0:
colors.append('green')
elif rating < 0:
colors.append('red')
else:
colors.append('gray')
return ratings, colors
# Đọc dữ liệu từ file CSV vào DataFrame
df = pd.read_csv(r"C:\Python311\workspaces\p7b55_s1.csv")
# Gọi hàm QCM và lưu kết quả vào biến ratings và colors
ratings, colors = qcm_rectangle(df)
# Vẽ biểu đồ
plt.figure(figsize=(10, 6))
plt.bar(range(1, 56), ratings, color=colors)
plt.xlabel('Số')
plt.ylabel('Rating')
plt.title('Biểu đồ rating của các số từ S1 đến S55')
plt.show()
Chú thích:
- Cột màu xanh lớn hơn 0: Điều này biểu thị rằng các số hạng có mức độ biến đổi cao hơn so với các số hạng khác. Nó có thể được coi là một rating biến động khó lường, vì những số hạng này có xu hướng thay đổi nhiều trong thời gian. Khi một số hạng có rating dương lớn, điều này có thể đồng nghĩa với việc rủi ro cũng lớn do tính biến động cao của chúng.
- Cột biểu đồ âm, nhỏ hơn 0: Điều này chỉ ra rằng các số hạng có mức độ biến đổi thấp hơn so với các số hạng khác. Rating biến động ít, cho thấy sự ổn định và ít biến thiên trong các số hạng này. Khi một số hạng có rating âm, có thể hiểu là rủi ro cũng ít hơn do tính biến động thấp.
- Cột biểu đồ = 0:Cột biểu đồ = 0: Đây là trường hợp khi các số hạng có mức độ biến đổi trung bình và có sự kiểm soát được. Đây là trường hợp khi các số hạng có mức độ biến đổi trung bình và có sự kiểm soát được. Rating bằng 0 cho thấy tính ổn định với sự cân bằng giữa các số hạng. Tóm lại: biểu đồ QCM ma trận chữ nhật giúp chúng ta đánh giá mức độ biến động của các số hạng trong ma trận. - Các cột màu xanh lớn hơn 0 biểu thị cho biến động cao và rủi ro lớn, trong khi các cột màu đỏ nhỏ hơn 0 biểu thị cho biến động thấp và rủi ro ít. - Cột có rating bằng 0 thể hiện sự ổn định và kiểm soát được của số hạng.